﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace BreukADO
{
    public partial class MaakNieuweOpdracht : Form
    {
        BeheerOpdrachten beheerOpdrachten;
        public MaakNieuweOpdracht(BeheerOpdrachten beheeropdrachtenform)
        {
            InitializeComponent();
            beheerOpdrachten = beheeropdrachtenform;
        }

        private void MaakNieuweOpdracht_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'breukADODataSet1.LeerlingOpdrachtDetail' table. You can move, or remove it, as needed.
            this.leerlingOpdrachtDetailTableAdapter.Fill(this.breukADODataSet1.LeerlingOpdrachtDetail);
            // TODO: This line of code loads data into the 'breukADODataSet1.leerlingOpdracht' table. You can move, or remove it, as needed.
            this.leerlingOpdrachtTableAdapter.Fill(this.breukADODataSet1.LeerlingOpdracht);
            // TODO: This line of code loads data into the 'breukADODataSet1.OpdrachtDetail' table. You can move, or remove it, as needed.
            this.opdrachtDetailTableAdapter.Fill(this.breukADODataSet1.OpdrachtDetail);
            // TODO: This line of code loads data into the 'breukADODataSet1.OpdrachtDetail' table. You can move, or remove it, as needed.
            this.opdrachtDetailTableAdapter.Fill(this.breukADODataSet1.OpdrachtDetail);
            // TODO: This line of code loads data into the 'breukADODataSet1.Opdracht' table. You can move, or remove it, as needed.
            this.opdrachtTableAdapter.Fill(this.breukADODataSet1.Opdracht);
            // TODO: This line of code loads data into the 'breukADODataSet1.Leerling' table. You can move, or remove it, as needed.
            this.leerlingTableAdapter.Fill(this.breukADODataSet1.Leerling);
            VulCmbKlassen();
        }
        private void VulCmbKlassen()
        {
            cmbKlassen.Items.Add("Alle");
            try
            {
                DataTable dt = leerlingTableAdapter.GetUniekeKlassen();
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    cmbKlassen.Items.Add(dt.Rows[i]["klas"].ToString());
                }
                cmbKlassen.SelectedIndex = 0;
            }
            catch (Exception) { };
        }

        private void cmbKlassen_SelectedIndexChanged(object sender, EventArgs e)
        {
            string klas = cmbKlassen.SelectedItem.ToString();
            if (klas.Equals("Alle")) leerlingBindingSource.RemoveFilter();
            else leerlingBindingSource.Filter = "klas = '" + klas + "'";
        }

        private void btnOpdrachtRegistreren_Click(object sender, EventArgs e)
        {
            
            MaakOpdrachtAan();
            DateTime datum = dateTimePicker1.Value;
            int opdrachtId = (int)opdrachtTableAdapter.getIDLaatsteOpdracht();
            MaakOpdrachtDetailAan(opdrachtId);


            List<DataRow> list = new List<DataRow>();
            if (dgvLeerlingen.SelectedRows == null || dgvLeerlingen.SelectedRows.Count == 0)
            {
                MessageBox.Show("Gelieve de leerlingen die de opdracht moeten maken te selecteren", "Fout!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
            foreach (DataGridViewRow dgvRow in dgvLeerlingen.SelectedRows)
            {
                DataRow row = null;
                DataRowView drv = (DataRowView)dgvRow.DataBoundItem;
                row = drv.Row;
                list.Add(row);
            }

            foreach (DataRow row in list)
            {
                int leerlingID = (int)row["leerlingID"];
                leerlingOpdrachtTableAdapter.VoegLeerlingMetOpdrachtToe(leerlingID, opdrachtId);
            }
            beheerOpdrachten.UpdateOpdrachtenTabel();
            beheerOpdrachten.UpdateOpdrachtDetailTabel();
            this.Close();
        }

        private void MaakOpdrachtAan()
        {
            DateTime datum = dateTimePicker1.Value;
            int moeilijkheidsgraad = Int32.Parse(cmbMoeilijkheidsgraad.Text);
            int maxScore = Int32.Parse(cmbMaxScore.Text);
            this.opdrachtTableAdapter.InsertOpdracht(datum, moeilijkheidsgraad, maxScore, false);
        }

        public void MaakOpdrachtDetailAan(int opdrachtID)
        {
            String opgaveTekst = txbOpgave.Text;
            String oplossingTekst = txbOplossing.Text;
            if (opgaveTekst == "" || oplossingTekst == "")
            {
                MessageBox.Show("U moet een opgave en oplossing invullen!", "Fout!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
            else
            {
                this.opdrachtDetailTableAdapter.InsertOpdrachtDetails(opgaveTekst, oplossingTekst, opdrachtID);
                beheerOpdrachten.UpdateOpdrachtenTabel();
            }
        }

     

    }
}
